<?php
/**
 * Typograf for textarea plugin
 *
 * @package Cms-Plugin
 * @subpackage Textarea
 * @author Sergey I. Aksyutin aka footnoiSe <footnoise@gmail.com>
 * @copyright (c) 2006 Ringo-Web Inc.
 */ 
    class Typograf
    {
    	var $_config;
    	
    	function Typograf()
    	{
    		$dir = realpath(dirname(__FILE__));
    		$file = file("{$dir}/regex.ipo");
    		
    		for ($i=0; $i<Count($file); $i++)
    		{
    			if ($file[$i][0] != "#" && !empty($file[$i]))
    			{
    				$regExpr = null;
    				$type 	 = null;
    				$value   = null;
    				
    				$array = explode("\t", $file[$i]);
    				
    				if (isset($array[0]))
    				{
    					$regExpr = str_replace("/", "\/", $array[0]);
    				}
    				if (isset($array[1]))
    				{
    					$type = $array[1];
    				}
    				if (isset($array[2]))
    				{
    					$value = $array[2];
    				}
    				if (!$value)
    				{
    					$value = $type;
    					$type = null;
    				}
    				
    				if ($regExpr)
    				{
    					$regExpr = "/". $regExpr . "/";
    						
    					if ($type)
    					{
    						$n = strlen($type);
    						for ($j=0; $j < $n; $j++)
    						{
    							if ($type[$j] != "g")
    							{
    								$regExpr .= $type[$j];	
    							}
    						}
    					}
    				}
    				
    				if ($regExpr && $value)
    				{
    					$this->_config[] =  array
    						(
    							$regExpr, $value
    						);
    				}
    			}
    				
    		}
    		
    		$file = file("{$dir}/replace.ipo");
    		$n = Count($file);
    		for ($i=0; $i < $n; $i++)
    		{
    			if (($file[$i][0] != "#") && (!empty($file[$i])))
    			{
    				$regExpr = null;
    				$value   = null;
    			
    				$array = explode("\t", $file[$i]);
    				
    				$reqExpr = $array[1];
    				$value = $array[0];
    				
    				$this->_config[] = array
    				(
    					$regExpr, $value
    				);
    			}
    		}
    	}
    	
    	function &Get()
    	{
    		static $typograf;
    		
    		if (!isset($typograf))
    		{
    			$typograf = new Typograf();
    		}
    		
    		return $typograf;
    	}
    	
    	function Using($str)
    	{
    		for($i = 0; $i<Count($this->_config); $i++)
    		{
   				$regExpr = $this->_config[$i][0];
   				$value = $this->_config[$i][1];
   				
   				if ($regExpr[0] == "/")
   				{
   					$str = preg_replace($regExpr, $value, $str);
   				}
   				else
   				{
   					$str = str_replace($regExpr, $value, $str);
   				}
   			}
    		
    		return $str;
    	}
    }
?>